using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._Raster._OrthoMapping
{
    /// <summary>
    /// <para>Generate Block Adjustment Report</para>
    /// <para>Generates a  report after performing ortho mapping block adjustment to a mosaic dataset. The report is critical in evaluating the quality and accuracy of the ortho mapping products.</para>
    /// <para>在对镶嵌数据集执行正射映射块平差后生成报告。该报告对于评估正射测绘产品的质量和准确性至关重要。</para>
    /// </summary>    
    [DisplayName("Generate Block Adjustment Report")]
    public class GenerateBlockAdjustmentReport : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public GenerateBlockAdjustmentReport()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_input_mosaic_dataset">
        /// <para>Input Mosaic Dataset</para>
        /// <para>The input mosaic dataset path.</para>
        /// <para>输入镶嵌数据集路径。</para>
        /// </param>
        /// <param name="_input_solution_table">
        /// <para>Input Solution Table</para>
        /// <para>The associated solution point table after block adjustment.</para>
        /// <para>块调整后的关联解点表。</para>
        /// </param>
        /// <param name="_input_solution_point">
        /// <para>Input Solution Points</para>
        /// <para>The solution point feature class.</para>
        /// <para>求解点要素类。</para>
        /// </param>
        /// <param name="_output_report">
        /// <para>Output Report</para>
        /// <para>The output ortho mapping report file path and name. The supported output format for a website is HTML.</para>
        /// <para>输出正射映射报告文件路径和名称。网站支持的输出格式是 HTML。</para>
        /// </param>
        public GenerateBlockAdjustmentReport(object _input_mosaic_dataset, object _input_solution_table, object _input_solution_point, object _output_report)
        {
            this._input_mosaic_dataset = _input_mosaic_dataset;
            this._input_solution_table = _input_solution_table;
            this._input_solution_point = _input_solution_point;
            this._output_report = _output_report;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Generate Block Adjustment Report";

        public override string CallName => "management.GenerateBlockAdjustmentReport";

        public override List<string> AcceptEnvironments => ["workspace"];

        public override object[] ParameterInfo => [_input_mosaic_dataset, _input_solution_table, _input_solution_point, _output_report, _input_control_point_for_adjustment, _report_format.GetGPValue()];

        /// <summary>
        /// <para>Input Mosaic Dataset</para>
        /// <para>The input mosaic dataset path.</para>
        /// <para>输入镶嵌数据集路径。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Mosaic Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _input_mosaic_dataset { get; set; }


        /// <summary>
        /// <para>Input Solution Table</para>
        /// <para>The associated solution point table after block adjustment.</para>
        /// <para>块调整后的关联解点表。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Solution Table")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _input_solution_table { get; set; }


        /// <summary>
        /// <para>Input Solution Points</para>
        /// <para>The solution point feature class.</para>
        /// <para>求解点要素类。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Solution Points")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _input_solution_point { get; set; }


        /// <summary>
        /// <para>Output Report</para>
        /// <para>The output ortho mapping report file path and name. The supported output format for a website is HTML.</para>
        /// <para>输出正射映射报告文件路径和名称。网站支持的输出格式是 HTML。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Report")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _output_report { get; set; }


        /// <summary>
        /// <para>Input Control Points For Adjustment</para>
        /// <para>The associated control points table, which may include tie points and ground control points.</para>
        /// <para>关联的控制点表，其中可能包括连接点和地面控制点。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Control Points For Adjustment")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _input_control_point_for_adjustment { get; set; } = null;


        /// <summary>
        /// <para>Report Format</para>
        /// <para><xdoc>
        ///   <para>The output format of the block adjustment report.</para>
        ///   <bulletList>
        ///     <bullet_item>HTML—Adjustment report is created as an HTML file. This is the default.</bullet_item><para/>
        ///     <bullet_item>PDF—Adjustment report is created as a PDF file.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>区块调整报告的输出格式。</para>
        ///   <bulletList>
        ///     <bullet_item>HTML - 校正报告创建为 HTML 文件。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>PDF - 校正报告将创建为 PDF 文件。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Report Format")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _report_format_value _report_format { get; set; } = _report_format_value._HTML;

        public enum _report_format_value
        {
            /// <summary>
            /// <para>HTML</para>
            /// <para>HTML—Adjustment report is created as an HTML file. This is the default.</para>
            /// <para>HTML - 校正报告创建为 HTML 文件。这是默认设置。</para>
            /// </summary>
            [Description("HTML")]
            [GPEnumValue("HTML")]
            _HTML,

            /// <summary>
            /// <para>PDF</para>
            /// <para>PDF—Adjustment report is created as a PDF file.</para>
            /// <para>PDF - 校正报告将创建为 PDF 文件。</para>
            /// </summary>
            [Description("PDF")]
            [GPEnumValue("PDF")]
            _PDF,

        }

        public GenerateBlockAdjustmentReport SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}